Routing algorithms are algorithms that select a path for traffic in a network, or between or across multiple networks. These routing algorithms may be implemented in the computer network devices forming the network. When a data packet leaves its source, there are many different paths it can take to its destination. Different routing algorithms may be used to determine the best path between the source and the destination. Computer network devices in a network, such as routers and switches, may implement adaptive routing algorithms that calculate, for the packets passing through the network and at every hop in the path to their destination, the best path to take based on the network load. Adaptive routing algorithms may use virtual channels (VCs) to route packets through the network which may avoid deadlock and reduce head-of-line blocking and may further improve network latency and throughput.